Praktikum Deep Learning

Optimierung Teil 2

Beispiel anhand MNIST

Die MNIST-Datenbank (Modified National Institute of Standards and Technology database) ist eine öffentlich verfügbare Datenbank von handgeschriebenen Ziffern. Die MNIST-Datenbank besteht aus 60.000 Beispielen (28x28 grayscale Bilder) im Trainingsdatensatz und 10.000 Beispielen im Testdatensatz.

MnistExamples.png

Wir werden eine einfache Neurale Netzwerk aus 2 hidden Schichten (500 bzw. 50 Knoten) bilden und werden uns Loss Landschaft für 2 Gewichte in letzten Layer anschauen. Überwachung diese 2 Gewichte lässt sich wieder qualitative Unterschied zwischen Algorythmen zeigen.

structure.png

Lassen uns anfangen. Wir importieren alle benötigte Module und bereiten Daten vor.

Die Eingabedaten sind 60,000 grayscale 28x28 Bilder. \ D.h. die X-Werte sind die Zahlen zwischen 0 und 255. Für Normalisierung reicht sie durch 255 zu teilen. \ Wir werden auch sie aus 28x28 Matrice zum 1x784 Vektor strecken.

Als Aktivierung-Funktion wird Sigmoid benutzt $S(x)=\frac{1}{1+e^{-x}}$

sigmoid.png

Plot der Loss Landschaft für unterschiedliche Anzahl von Samplen:

Lassen uns Netzwerk trainieren, aber nur die Gewichte, die wir überwachen.

Method:  SGD
Method:  SGD-Momentum
Method:  Nesterov-SGD
Method:  RMSProp
Method:  Adam
Fertig!

3D Ansicht

Anmerkung: Die Linien sind absichtlich höher dargestellt.

Contour Plot